nginx设计中的性能优化点
一些指标
- 10000个非活跃 http keep alive 连接在nginx消耗2.5MB内存
- 单机支持10万以上并非连接
和nginx有关的内核调优:
可以修改/etc/sysctl.conf来更改内核参数调优
- file-max: 一个进程最大可以打开的文件句柄数, 这个参数直接限制了nginx的最大并发连接数
- tcp-tw-reuse: 设置为1时表示允许将time-wait状态的socket重新新的tcp连接。 ps. 内存方面现在linux已经优化的很好, 处于time-wait状态的socket只占用很少的内存, 释放/复用端口最重要, 毕竟端口数就就那些。
- tcp-keepalive-time: 当keep-alive启用时,tcp发送keep-alive消息的频率, 默认两小时, 设置的低一些可以更快清理无效连接。
- tcp_fin_timeout: 服务器主动断开连接时, socket保持在fin-wait-2状态的最大时间
- tcp_max_sync_backlog: syn队列最大长度
- ip_local_port_range: tcp/udp端口取值范围(是设置本地, 不能设置远端)
- net.ipv4.tcp_rmem/net.ipv4.tcp_wmem: tcp接受/发送滑动窗口的最小值, 最大值, 默认值
- netdev_max_backlog: 网卡接收数据包的速度大于内核处理速度时, 有一个队列保存这些数据包, 这个参数表示队列最大值
- rmem_default/wmwm_default: 内核套接字接收/发送缓存区的